##########################################################################################################################
# version: [v.1.0] date: [Monday November 14 22:41:51 CST 2022] 
##########################################################################################################################
#
# ChangeLog :
#   2022-11-14 - v1.0
#	2022-11-15 - v1.1
#	2022-11-19 - v2.0
# ------------------------------------------------

MQTT_TOPDIR = $(CURDIR)
export MQTT_TOPDIR

-include $(MQTT_TOPDIR)/config.mk
# include tool/Makefile.kconfig
######################################
# target
######################################
TARGET = mqtt-test


#######################################
# paths
#######################################
# Build path
BUILD_DIR = out


#######################################
# compile, whereis your gcc
#######################################
CC = $(CFG_COMPILER)
ifeq ($(CFG_WIN32), y)
	CC = d:\\gcc\\bin\\gcc
#	CC = /d/gcc/bin/gcc
endif
######################################
# source
######################################
# C sources
C_SOURCES =  \
	$(wildcard src/*.c) \
	samples/transport.c \
	samples/pub0sub1.c \
	cJSON/cJSON.c


######################################
# C defines
######################################
ifeq ($(CFG_WIN32), y)
C_DEFS += -DWIN32 -D_WIN32
endif


######################################
# C includes
######################################
C_INCLUDES =  \
	-I $(MQTT_TOPDIR)/samples \
	-I $(MQTT_TOPDIR)/src \
	-I $(MQTT_TOPDIR)/cJSON 


######################################
# C FLAGS
######################################
CFLAGS += $(C_DEFS) $(C_INCLUDES)
CFLAGS += -DMQTT_IP=\"$(CFG_HOST_IP)\"
CFLAGS += -DMQTT_PORT=$(CFG_HOST_PORT)
#CFLAGS += -DWINVER=0x0501 
#CFLAGS += -D_WIN32_WINNT=0x0501

#######################################
# LDFLAGS
#######################################
# libraries
# use flags -lws2_32 -lwsock32 to make sure your code can excute
ifeq ($(CFG_WIN32), y)
LIBS = -lws2_32 -lwsock32
# set windows socket lib, I'm using gcc for windows
LIBDIR = -LD:\gcc\x86_64-w64-mingw32\lib
endif
LIBFLAGS += $(LIBDIR) $(LIBS)

#######################################
# default action: build all
#######################################
all:  $(BUILD_DIR)/$(TARGET)

# list of objects
# set objects name
OBJECTS = $(addprefix $(BUILD_DIR)/obj/,$(notdir $(C_SOURCES:.c=.o)))
# set find path
vpath %.c $(sort $(dir $(C_SOURCES)))

# build obj
$(BUILD_DIR)/obj/%.o: %.c Makefile | $(BUILD_DIR)/obj 
	$(CC) -c $(CFLAGS)  $< -o $@

# build bin
$(BUILD_DIR)/$(TARGET): $(OBJECTS) Makefile
	$(CC) $(OBJECTS) $(LIBFLAGS) -o $@

# mkdir
$(BUILD_DIR)/obj:
	mkdir -p $@

#######################################
# clean up
#######################################
clean:
	-rm -fR $(BUILD_DIR)
  
include tools/Makefile.kconfig
# *** EOF ***